// 函数可以作为参数传递给另外一个函数。

function f1(xingcan) {
    console.log(xingcan);
    console.log(xingcan())
}
// f2() 是函数声明
function f2() {
    console.log('I am f2()');
    return 'f2 say hello!';
}

f1(f2);
console.log('-----------------');

// f3 是函数表达式
var f3 = function() {
    console.log('I am f3()');
    return 'f3 say hello!';
};

f1(f3);
console.log('-----------------');

// 立即执行函数
// function 是一个引用类型的对象
console.log((function(x) {
    console.log('I am f3()');
    return 'f3 say hello to ' + x + '!';
})('hjx'));
console.log('-----------------');

var numArray = [5];
var numArray2 = [6];

function exchange(a, b) {
    var numArray3 = a[0]; // 中间的容器
    // console.log(numArray3); // 5 typeof number
    a[0] = b[0];
    b[0] = numArray3;
}

exchange(numArray, numArray2);

console.log(numArray + ' ' + numArray2);


